package com.breadenglish.cms.api.app.dao;

import com.breadenglish.cms.api.app.domain.db.Code;
import com.breadenglish.cms.api.app.domain.db.CodeKey;
import com.breadenglish.cms.api.app.domain.query.CodeQuery;

import java.util.List;
import java.util.Map;

/**
 * Code
 * <p>
 * User: guoyao
 * DateTime: 2015-12-22 20:06:38
 */
public interface CodeDao {


    /**
     * 根据主键查询Code对象
     *
     * @param key
     * @return Code对象
     */
    CodeQuery selectByPrimaryKey(CodeKey key);

    /**
     * 根据查询条件查询符合条件的Code对象
     *
     * @param code
     * @return 符合条件的Code对象List
     */
    List<Code> select(Code code);

    /**
     * 查询字典及字典分类信息
     * @param code 字典信息
     * @return 字典信息集合
     */
    List<CodeQuery> selectCodeAndClass(CodeQuery code);

    /**
     *  查询字典树
     * @param code 字典信息
     * @return  字典信息结合
     */
    List<Code> queryCodeTree(Code code);

    /**
     * 根据主键删除Code对象
     *
     * @param key
     * @return 影响条件数
     */
    int deleteByPrimaryKey(CodeKey key);

    /**
     * 根据条件删除符合条件的Code对象
     *
     * @param code
     * @return 影响条件数
     */
    int delete(Code code);

    /**
     * 插入Code对象
     *
     * @param code
     * @return 影响条件数
     */
    int insert(Code code);

    /**
     * 更新Code对象
     *
     * @param code
     * @return 影响条件数
     */
    int update(Code code);

    /**
     * 验证字典唯一性
     * @param param
     * @return 统计结果
     */
    int uniqueCode(Map param);

}
